import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;

public class Seccion {
	
	
	private int nro_seccion;
	private LinkedList<Alumno> alumnos= new LinkedList<Alumno>();
	private Profesor profesor;
	
	
	
	public Seccion() {
		super();
	}
	public Profesor getProfesor() {
		return profesor;
	}
	public void setProfesor(Profesor profesor) {
		this.profesor = profesor;
	}
	public LinkedList<Alumno> getAlumnos() {
		return alumnos;
	}

	public void setAlumnos(LinkedList<Alumno> alumnos) {
		this.alumnos = alumnos;
	}
	
	
	

	public int getNro_seccion() {
		return nro_seccion;
	}

	public void setNro_seccion(int nro_seccion) {
		this.nro_seccion = nro_seccion;
	}
	
	public void AplicarEvaluaciones() {
		ListIterator<Alumno> it = alumnos.listIterator();
		while (it.hasNext()) {
			Alumno alum = it.next();
			alum.PresentarEva();
			profesor.EvaluarAlumno(alum);
		}
	}

	public void InscribirAlumno(Alumno e) {
		alumnos.add(e);
	}
	
	public void AsignarProfesor(Profesor p){
		profesor=p;
	}
	
	public void RetirarAlumno(String cedula)
	{
		
		ListIterator<Alumno> it = alumnos.listIterator();
		while (it.hasNext() && alumnos.size() > 0)
		{
	
			Alumno a = it.next();
			if(a.getCedula().equals(cedula))
				it.remove();
		}
		

	}
	public Alumno BuscarAlumno(String cedula){
		ListIterator<Alumno> it = alumnos.listIterator();
		while (it.hasNext()) 
		{
			Alumno a = it.next();
			if(a.getCedula().equals(cedula))
				return a;
		}
		return null;
	}
	
	
	public class Ordenarpornota implements Comparator<Alumno> 
	{
		public int compare (Alumno a, Alumno b){
		if(a.getNota_Final()<b.getNota_Final())
			return -1;
		else
			if(a.getNota_Final()>b.getNota_Final())
				return 1;
			else
				return 0;
		}
		
	}
	public LinkedList<Alumno> ListaAprobados(){
		String estado = "Aprobado";
		LinkedList<Alumno> Aprobados=new LinkedList<Alumno>();
		
		
		ListIterator<Alumno> it = alumnos.listIterator();
		while (it.hasNext()) 
		{
			Alumno a = it.next();
		
		if(a.getEstado().equals(estado))
			Aprobados.add(a);
		
		}
		return Aprobados;
	}	
public LinkedList<Alumno> ListaReprobados(){
	String estado = "Reprobado";
		LinkedList<Alumno> Reprobados=new LinkedList<Alumno>();
		
		
		ListIterator<Alumno> it = alumnos.listIterator();
		while (it.hasNext()) 
		{
			Alumno a = it.next();
		
		if(a.getEstado().equals(estado))
			Reprobados.add(a);
		}
		return Reprobados;
	}	

public float PromedioNotas(){
	
	float acum=0;
	int cont=0;
	ListIterator<Alumno> it = alumnos.listIterator();
	while (it.hasNext()) 
	{
		Alumno a = it.next();
		acum=acum+a.getNota_Final();
		cont++;
	}
	return acum/cont;
	
	
}


public boolean Vacia(){
	return alumnos.isEmpty();
}
public void Imprimirtxt(LinkedList<Alumno> lista,File TextFile) throws IOException{
	
		FileWriter TextOut = new FileWriter(TextFile, true);
		Alumno a;
		ListIterator<Alumno> it =lista.listIterator();
		while (it.hasNext()) 
		 {
			
			a = it.next();
			TextOut.write("Cedula: \n\r"+a.getCedula());
			TextOut.write("Apellido: \n\r"+a.getApellido());
			TextOut.write("Nombre: \n\r"+a.getNombre());
			TextOut.write("Nota Final: \n\r"+a.getNota_Final());
		 }
		
				
		//cerrar archivo
		TextOut.close();
	
}
public int Nro_Alumno()
{
	return alumnos.size();
  
}
}
